package com.tosee.utils;

import java.math.BigInteger;
import java.security.MessageDigest;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.validator.routines.EmailValidator;

public class Utils {

    public static boolean validerEmail(String _email) {
        boolean retour = false;

        if(StringUtils.isNotBlank(_email)) {
            EmailValidator emailValidator = EmailValidator.getInstance();
            retour = emailValidator.isValid(_email);
        }
        return retour;
    }

    public static String encrypterPassword(String _password, String _gds) {
        String retour = null;
        if(StringUtils.isNotBlank(_password) && StringUtils.isNotBlank(_gds)) {
            try {
                MessageDigest m = MessageDigest.getInstance("MD5");
                m.reset();
                m.update((_password + _gds).getBytes());
                byte[] digest = m.digest();
                BigInteger bigInt = new BigInteger(1, digest);
                String encryptedPassword = bigInt.toString(16);

                while(encryptedPassword.length() < 32) {
                    encryptedPassword = "0" + encryptedPassword;
                }
                retour = encryptedPassword;
            } catch (Exception e) {
                retour = null;
            }
        }
        return retour;

    }

    /**
     * Methode de Validation d'un MDP (peux evoluer)
     * 
     * @param _mdp Mot de passe envoyé par l'interface
     * @param _mdpBdd Mot de passe de la BDD
     * @param _grainSel Le grain de sel
     * @return {@link Boolean}
     * @throws Exception Exception remontée
     */
    public static boolean validerMdp(String _mdp, String _mdpBdd, String _grainSel) {
        boolean retour = false;

        if(StringUtils.isNotBlank(_mdp) && StringUtils.isNotBlank(_mdpBdd) && StringUtils.isNotBlank(_grainSel)) {
            String mdp = Utils.encrypterPassword(_mdp, _grainSel);
            if(mdp != null && mdp.equals(_mdpBdd)) {
                retour = true;
            }
        }
        return retour;
    }
}
